This function receives either normal or expedited data. _ffff_dddd identifies
the local transport endpoint through which data will arrive, _bbbb_uuuu_ffff points
to a receive buffer where user data will be placed, and _nnnn_bbbb_yyyy_tttt_eeee_ssss specifies
the size of the receive buffer. _ffff_llll_aaaa_gggg_ssss may be set on return from _tttt______rrrr_cccc_vvvv
and specifies optional flags as described below.
By default, _tttt______rrrr_cccc_vvvv operates in synchronous mode and will wait for data to
arrive if none is currently available. However, if _OOOO______NNNN_DDDD_EEEE_LLLL_AAAA_YYYY or
_OOOO______NNNN_OOOO_NNNN_BBBB_LLLL_OOOO_CCCC_KKKK is set (via _tttt______oooo_pppp_eeee_nnnn or _ffff_cccc_nnnn_tttt_llll), _tttt______rrrr_cccc_vvvv will execute in
asynchronous mode and will fail if no data is available. (See _TTTT_NNNN_OOOO_DDDD_AAAA_TTTT_AAAA
below.)
On return from the call, if _TTTT______MMMM_OOOO_RRRR_EEEE is set in _ffff_llll_aaaa_gggg_ssss, this indicates that
there is more data and the current transport service data unit (_TTTT_SSSS_DDDD_UUUU) or
expedited transport service data unit (_EEEE_TTTT_SSSS_DDDD_UUUU) must be received in
multiple _tttt______rrrr_cccc_vvvv calls. Each _tttt______rrrr_cccc_vvvv with the _TTTT______MMMM_OOOO_RRRR_EEEE flag set indicates that
another _tttt______rrrr_cccc_vvvv must follow to get more data for the current _TTTT_SSSS_DDDD_UUUU. The end
of the _TTTT_SSSS_DDDD_UUUU is identified by the return of a _tttt______rrrr_cccc_vvvv call with the _TTTT______MMMM_OOOO_RRRR_EEEE
flag not set. If the transport provider does not support the concept of
a _TTTT_SSSS_DDDD_UUUU as indicated in the _iiii_nnnn_ffff_oooo argument on return from _tttt______oooo_pppp_eeee_nnnn or
_tttt______gggg_eeee_tttt_iiii_nnnn_ffff_oooo, the _TTTT______MMMM_OOOO_RRRR_EEEE flag is not meaningful and should be ignored.
On return, the data returned is expedited data if _TTTT______EEEE_XXXX_PPPP_EEEE_DDDD_IIII_TTTT_EEEE_DDDD is set in
_ffff_llll_aaaa_gggg_ssss. If the number of bytes of expedited data exceeds _nnnn_bbbb_yyyy_tttt_eeee_ssss, _tttt______rrrr_cccc_vvvv
will set _TTTT______EEEE_XXXX_PPPP_EEEE_DDDD_IIII_TTTT_EEEE_DDDD and _TTTT______MMMM_OOOO_RRRR_EEEE on return from the initial call.
Subsequent calls to retrieve the remaining _EEEE_TTTT_SSSS_DDDD_UUUU will have _TTTT______EEEE_XXXX_PPPP_EEEE_DDDD_IIII_TTTT_EEEE_DDDD
set on return. The end of the _EEEE_TTTT_SSSS_DDDD_UUUU is identified by the return of a
_tttt______rrrr_cccc_vvvv call with the _TTTT______MMMM_OOOO_RRRR_EEEE flag not set.
If expedited data arrives after part of a _TTTT_SSSS_DDDD_UUUU has been retrieved,
receipt of the remainder of the _TTTT_SSSS_DDDD_UUUU will be suspended until the _EEEE_TTTT_SSSS_DDDD_UUUU
has been processed. Only after the full _EEEE_TTTT_SSSS_DDDD_UUUU has been retrieved (_TTTT______MMMM_OOOO_RRRR_EEEE
not set) will the remainder of the _TTTT_SSSS_DDDD_UUUU be available to the user.
This function resides within both the X/Open compliant _llll_iiii_bbbb_xxxx_nnnn_eeee_tttt and the
On failure, _tttt______eeee_rrrr_rrrr_nnnn_oooo may be set to one of the following:
_TTTT_BBBB_AAAA_DDDD_FFFF The specified file descriptor does not refer to a
transport endpoint.
_TTTT_NNNN_OOOO_DDDD_AAAA_TTTT_AAAA _OOOO______NNNN_DDDD_EEEE_LLLL_AAAA_YYYY or _OOOO______NNNN_OOOO_NNNN_BBBB_LLLL_OOOO_CCCC_KKKK was set, but no data is
currently available from the transport provider.
_TTTT_LLLL_OOOO_OOOO_KKKK An asynchronous event has occurred on this transport
endpoint and requires immediate attention.
_TTTT_NNNN_OOOO_TTTT_SSSS_UUUU_PPPP_PPPP_OOOO_RRRR_TTTT This function is not supported by the underlying
transport provider.
_TTTT_OOOO_UUUU_TTTT_SSSS_TTTT_AAAA_TTTT_EEEE If ______XXXX_OOOO_PPPP_EEEE_NNNN______SSSS_OOOO_UUUU_RRRR_CCCC_EEEE is defined, then this error will be
returned within _tttt______eeee_rrrr_rrrr_nnnn_oooo when _tttt______rrrr_cccc_vvvv() was issued in the
wrong sequence on the transport endpoint referenced by
_ffff_dddd.
_TTTT_SSSS_YYYY_SSSS_EEEE_RRRR_RRRR A system error has occurred during execution of this